import { createStore, Store } from 'vuex'
import { InjectionKey } from 'vue'
import todos, { TodoState } from './module/todos'

// 1. 创建一个 injectionKey
export const key: InjectionKey<Store<State>> = Symbol()

export type State = {
  counter: number,
  todos: TodoState // 加上问号的原因：如果不加的话，在 createStore 中的 state 中会报错，提示你需要添加一个 todo 的属性
}

export default createStore({
  state: {
    counter: 1,
    todos: {
      todos: []
    }
  },
  mutations: {
    add (state) {
      state.counter++
    }
  },
  modules: {
    todos
  }
})